<?xml version="1.0" encoding="utf-8"?>
<!-- openEHR Release 1.0.1 BaseTypes  XML schema -->
<!-- Authored by Ocean Informatics 2007.04.13  -->
<!-- Corrected by Ocean Informatics 2009.03.11: Iso8601DateTime and Iso8601Time types restriction pattern -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.openehr.org/v1"
	targetNamespace="http://schemas.openehr.org/v1" elementFormDefault="qualified" version="v1.0.1"
	id="BaseTypes.xsd">
	<xs:complexType name="DATA_VALUE" abstract="true">
		<xs:sequence/>
	</xs:complexType>
	<xs:complexType name="DV_BOOLEAN">
		<xs:complexContent>
			<xs:extension base="DATA_VALUE">
				<xs:sequence>
					<xs:element name="value" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_IDENTIFIER">
		<xs:complexContent>
			<xs:extension base="DATA_VALUE">
				<xs:sequence>
					<xs:element name="issuer" type="xs:string"/>
					<xs:element name="assigner" type="xs:string"/>
					<xs:element name="id" type="xs:string"/>
					<xs:element name="type" type="xs:string"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_STATE">
		<xs:complexContent>
			<xs:extension base="DATA_VALUE">
				<xs:sequence>
					<xs:element name="value" type="DV_CODED_TEXT"/>
					<xs:element name="is_terminal" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_ORDERED" abstract="true">
		<xs:complexContent>
			<xs:extension base="DATA_VALUE">
				<xs:sequence>
					<xs:element name="normal_range" type="DV_INTERVAL" minOccurs="0"/>
					<xs:element name="other_reference_ranges" type="REFERENCE_RANGE" minOccurs="0"
						maxOccurs="unbounded"/>
					<xs:element name="normal_status" type="CODE_PHRASE" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_INTERVAL">
		<xs:complexContent>
			<xs:extension base="DATA_VALUE">
				<xs:sequence>
					<xs:element name="lower" type="DV_ORDERED" minOccurs="0"/>
					<xs:element name="upper" type="DV_ORDERED" minOccurs="0"/>
					<xs:element name="lower_included" type="xs:boolean" minOccurs="0"/>
					<xs:element name="upper_included" type="xs:boolean" minOccurs="0"/>
					<xs:element name="lower_unbounded" type="xs:boolean"/>
					<xs:element name="upper_unbounded" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="REFERENCE_RANGE">
		<xs:sequence>
			<xs:element name="meaning" type="DV_TEXT"/>
			<xs:element name="range" type="DV_INTERVAL"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DV_QUANTIFIED" abstract="true">
		<xs:complexContent>
			<xs:extension base="DV_ORDERED">
				<xs:sequence>
					<xs:element name="magnitude_status" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_COUNT">
		<xs:complexContent>
			<xs:extension base="DV_AMOUNT">
				<xs:sequence>
					<xs:element name="magnitude" type="xs:long"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_AMOUNT">
		<xs:complexContent>
			<xs:extension base="DV_QUANTIFIED">
				<xs:sequence>
					<xs:element name="accuracy" type="xs:float" minOccurs="0"/>
					<xs:element name="accuracy_is_percent" type="xs:boolean" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_TEMPORAL">
		<xs:complexContent>
			<xs:extension base="DV_QUANTIFIED">
				<xs:sequence>
					<xs:element name="accuracy" type="DV_DURATION" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_QUANTITY">
		<xs:complexContent>
			<xs:extension base="DV_AMOUNT">
				<xs:sequence>
					<xs:element name="magnitude" type="xs:double"/>
					<xs:element name="units" type="xs:string"/>
					<xs:element name="precision" type="xs:int" default="-1" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_ORDINAL">
		<xs:complexContent>
			<xs:extension base="DV_ORDERED">
				<xs:sequence>
					<xs:element name="value" type="xs:int"/>
					<xs:element name="symbol" type="DV_CODED_TEXT"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:simpleType name="PROPORTION_KIND">
		<xs:restriction base="xs:integer">
			<xs:enumeration value="0" id="pk_ratio"/>
			<xs:enumeration value="1" id="pk_unitary"/>
			<xs:enumeration value="2" id="pk_percent"/>
			<xs:enumeration value="3" id="pk_fraction"/>
			<xs:enumeration value="4" id="pk_integer_fraction"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="DV_PROPORTION">
		<xs:complexContent>
			<xs:extension base="DV_AMOUNT">
				<xs:sequence>
					<xs:element name="numerator" type="xs:float"/>
					<xs:element name="denominator" type="xs:float"/>
					<xs:element name="type" type="PROPORTION_KIND"/>
					<xs:element name="precision" type="xs:int" default="-1" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_PARAGRAPH">
		<xs:complexContent>
			<xs:extension base="DATA_VALUE">
				<xs:sequence>
					<xs:element name="items" type="DV_TEXT" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_TEXT">
		<xs:complexContent>
			<xs:extension base="DATA_VALUE">
				<xs:sequence>
					<xs:element name="value" type="xs:string"/>
					<xs:element name="hyperlink" type="DV_URI" minOccurs="0"/>
					<xs:element name="formatting" type="xs:string" minOccurs="0"/>
					<xs:element name="mappings" type="TERM_MAPPING" minOccurs="0"
						maxOccurs="unbounded"/>
					<xs:element name="language" type="CODE_PHRASE" minOccurs="0"/>
					<xs:element name="encoding" type="CODE_PHRASE" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_CODED_TEXT">
		<xs:complexContent>
			<xs:extension base="DV_TEXT">
				<xs:sequence>
					<xs:element name="defining_code" type="CODE_PHRASE"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CODE_PHRASE">
		<xs:sequence>
			<xs:element name="terminology_id" type="TERMINOLOGY_ID"/>
			<xs:element name="code_string" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="TERM_MAPPING">
		<xs:sequence>
			<xs:element name="match" type="matchString" default="?"/>
			<xs:element name="purpose" type="DV_CODED_TEXT" minOccurs="0"/>
			<xs:element name="target" type="CODE_PHRASE"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="Iso8601DateTime">
		<xs:restriction base="xs:string">
			<!--<xs:pattern
				value="\d{4}((0[1-9]|1[0-2])((0[1-9]|[12]\d|3[01])(T?([01]\d|2[0-3])([0-5]\d([0-5]\d([,.]\d+)?)?)?(Z|([+\-]((0\d)|(1[0-2]))(00|30)?))?)?)?)?|\d{4}(\-(0[1-9]|1[0-2])(\-(0[1-9]|[12]\d|3[01])(T([01]\d|2[0-3])(:[0-5]\d(:[0-5]\d([,.]\d+)?)?)?(Z|([+\-]((0\d)|(1[0-2]))(:(00|30))?))?)?)?)?"
			/>-->
			<!-- support +13:00 timezone (e.g. Auckland summer time) -->
			<xs:pattern value="\d{4}((0[1-9]|1[0-2])((0[1-9]|[12]\d|3[01])(T?([01]\d|2[0-3])([0-5]\d([0-5]\d([,.]\d+)?)?)?(Z|([+\-]((0\d)|(1[0-3]))(00|30)?))?)?)?)?|\d{4}(\-(0[1-9]|1[0-2])(\-(0[1-9]|[12]\d|3[01])(T([01]\d|2[0-3])(:[0-5]\d(:[0-5]\d([,.]\d+)?)?)?(Z|([+\-]((0\d)|(1[0-3]))(:(00|30))?))?)?)?)?"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Iso8601Date">
		<xs:restriction base="xs:string">
			<xs:pattern
				value="\d{4}((((0[1-9])|(1[0-2]))((0[1-9])|([12]\d)|(3[01]))?)?|(\-(((0[1-9])|(1[0-2]))(\-((0[1-9])|([12]\d)|(3[01])))?)?)?)"
			/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Iso8601Time">
		<xs:restriction base="xs:string">
			<!--<xs:pattern
				value="([01]\d|2[0-3])([0-5]\d([0-5]\d([,.]\d+)?)?)?(Z|([+\-]((0\d)|(1[0-2]))(00|30)?))?|([01]\d|2[0-3])(:[0-5]\d(:[0-5]\d([,.]\d+)?)?)?(Z|([+\-]((0\d)|(1[0-2]))(:(00|30))?))?"
			/>-->
			<!-- support +13:00 timezone (e.g. Auckland summer time) -->
			<xs:pattern value="([01]\d|2[0-3])([0-5]\d([0-5]\d([,.]\d+)?)?)?(Z|([+\-]((0\d)|(1[0-3]))(00|30)?))?|([01]\d|2[0-3])(:[0-5]\d(:[0-5]\d([,.]\d+)?)?)?(Z|([+\-]((0\d)|(1[0-3]))(:(00|30))?))?"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Iso8601Duration">
		<xs:restriction base="xs:string">
			<xs:pattern value="P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(\d+H)?(\d+M)?(\d+(\.\d+)?S)?)?"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="DV_DATE_TIME">
		<xs:complexContent>
			<xs:extension base="DV_TEMPORAL">
				<xs:sequence>
					<xs:element name="value" type="Iso8601DateTime"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_TIME">
		<xs:complexContent>
			<xs:extension base="DV_TEMPORAL">
				<xs:sequence>
					<xs:element name="value" type="Iso8601Time"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_DATE">
		<xs:complexContent>
			<xs:extension base="DV_TEMPORAL">
				<xs:sequence>
					<xs:element name="value" type="Iso8601Date"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_DURATION">
		<xs:complexContent>
			<xs:extension base="DV_AMOUNT">
				<xs:sequence>
					<xs:element name="value" type="Iso8601Duration"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_TIME_SPECIFICATION" abstract="true">
		<xs:complexContent>
			<xs:extension base="DATA_VALUE">
				<xs:sequence>
					<xs:element name="value" type="DV_PARSABLE"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_PERIODIC_TIME_SPECIFICATION">
		<xs:complexContent>
			<xs:extension base="DV_TIME_SPECIFICATION">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_GENERAL_TIME_SPECIFICATION">
		<xs:complexContent>
			<xs:extension base="DV_TIME_SPECIFICATION">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_ENCAPSULATED" abstract="true">
		<xs:complexContent>
			<xs:extension base="DATA_VALUE">
				<xs:sequence>
					<xs:element name="charset" type="CODE_PHRASE" minOccurs="0"/>
					<xs:element name="language" type="CODE_PHRASE" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_MULTIMEDIA">
		<xs:complexContent>
			<xs:extension base="DV_ENCAPSULATED">
				<xs:sequence>
					<xs:element name="alternate_text" type="xs:string" minOccurs="0"/>
					<xs:element name="uri" type="DV_URI" minOccurs="0"/>
					<xs:element name="data" type="xs:base64Binary" minOccurs="0"/>
					<xs:element name="media_type" type="CODE_PHRASE"/>
					<xs:element name="compression_algorithm" type="CODE_PHRASE" minOccurs="0"/>
					<xs:element name="integrity_check" type="xs:base64Binary" minOccurs="0"/>
					<xs:element name="integrity_check_algorithm" type="CODE_PHRASE" minOccurs="0"/>
					<xs:element name="size" type="xs:int"/>
					<xs:element name="thumbnail" type="DV_MULTIMEDIA" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_PARSABLE">
		<xs:complexContent>
			<xs:extension base="DV_ENCAPSULATED">
				<xs:sequence>
					<xs:element name="value" type="xs:string"/>
					<xs:element name="formalism" type="xs:string"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_URI">
		<xs:complexContent>
			<xs:extension base="DATA_VALUE">
				<xs:sequence>
					<xs:element name="value" type="xs:anyURI" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DV_EHR_URI">
		<xs:complexContent>
			<xs:extension base="DV_URI">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:simpleType name="matchString">
		<xs:restriction base="xs:string">
			<xs:pattern value="\?"/>
			<xs:pattern value="&lt;"/>
			<xs:pattern value="&gt;"/>
			<xs:pattern value="="/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="archetypeNodeId">
		<xs:restriction base="xs:string">
			<xs:pattern
				value="([a-zA-Z][\w_]*-[\w][\w_]*-[\w][\w_]*\.[\w][\w_]*(-[\w][\w_]*)*\.v\d+(\.\d)*)|(at(0\.[0-9]{1,4}|[0-9]{4})(\.[0-9]{1,3})*)"
			/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="atCode">
		<xs:restriction base="xs:string">
			<xs:pattern value="at(0\.[0-9]{1,4}|[0-9]{4})(\.[0-9]{1,3})*"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="OBJECT_ID" abstract="true">
		<xs:sequence>
			<xs:element name="value" type="xs:token"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="UID_BASED_ID">
		<xs:complexContent>
			<xs:extension base="OBJECT_ID">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="OBJECT_VERSION_ID">
		<xs:complexContent>
			<xs:extension base="UID_BASED_ID"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ARCHETYPE_ID">
		<xs:complexContent>
			<xs:extension base="OBJECT_ID"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="TEMPLATE_ID">
		<xs:complexContent>
			<xs:extension base="OBJECT_ID"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="TERMINOLOGY_ID">
		<xs:complexContent>
			<xs:extension base="OBJECT_ID"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="HIER_OBJECT_ID">
		<xs:complexContent>
			<xs:extension base="UID_BASED_ID"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="GENERIC_ID">
		<xs:complexContent>
			<xs:extension base="OBJECT_ID">
				<xs:sequence>
					<xs:element name="scheme" type="xs:string"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="OBJECT_REF">
		<xs:sequence>
			<xs:element name="id" type="OBJECT_ID"/>
			<xs:element name="namespace" type="xs:token"/>
			<xs:element name="type" type="xs:token"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PARTY_REF">
		<xs:complexContent>
			<xs:extension base="OBJECT_REF"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ACCESS_GROUP_REF">
		<xs:complexContent>
			<xs:extension base="OBJECT_REF"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LOCATABLE_REF">
		<xs:complexContent>
			<xs:extension base="OBJECT_REF">
				<xs:sequence>
					<xs:element name="path" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="REVISION_HISTORY_ITEM">
		<xs:sequence>
			<xs:element name="version_id" type="OBJECT_VERSION_ID"/>
			<xs:element name="audits" type="AUDIT_DETAILS" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="REVISION_HISTORY">
		<xs:sequence>
			<xs:element name="items" type="REVISION_HISTORY_ITEM" minOccurs="0"
				maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="AUDIT_DETAILS">
		<xs:sequence>
			<xs:element name="system_id" type="xs:string"/>
			<xs:element name="committer" type="PARTY_PROXY"/>
			<xs:element name="time_committed" type="DV_DATE_TIME"/>
			<xs:element name="change_type" type="DV_CODED_TEXT"/>
			<xs:element name="description" type="DV_TEXT" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ATTESTATION">
		<xs:complexContent>
			<xs:extension base="AUDIT_DETAILS">
				<xs:sequence>
					<xs:element name="attested_view" type="DV_MULTIMEDIA" minOccurs="0"/>
					<xs:element name="proof" type="xs:string" minOccurs="0"/>
					<xs:element name="items" type="DV_EHR_URI" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element name="reason" type="DV_TEXT"/>
					<xs:element name="is_pending" type="xs:boolean" default="false"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PARTY_PROXY" abstract="true">
		<xs:sequence>
			<xs:element name="external_ref" type="PARTY_REF" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PARTY_IDENTIFIED">
		<xs:complexContent>
			<xs:extension base="PARTY_PROXY">
				<xs:sequence>
					<xs:element name="name" type="xs:string" minOccurs="0"/>
					<xs:element name="identifiers" type="DV_IDENTIFIER" minOccurs="0"
						maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PARTY_RELATED">
		<xs:complexContent>
			<xs:extension base="PARTY_IDENTIFIED">
				<xs:sequence>
					<xs:element name="relationship" type="DV_CODED_TEXT"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PARTY_SELF">
		<xs:complexContent>
			<xs:extension base="PARTY_PROXY">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PARTICIPATION">
		<xs:sequence>
			<xs:element name="function" type="DV_TEXT"/>
			<xs:element name="performer" type="PARTY_PROXY"/>
			<xs:element name="time" type="DV_INTERVAL" minOccurs="0"/>
			<xs:element name="mode" type="DV_CODED_TEXT"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FEEDER_AUDIT">
		<xs:sequence>
			<xs:element name="originating_system_item_ids" type="DV_IDENTIFIER" minOccurs="0"
				maxOccurs="unbounded"/>
			<xs:element name="feeder_system_item_ids" type="DV_IDENTIFIER" minOccurs="0"
				maxOccurs="unbounded"/>
			<xs:element name="original_content" type="DV_ENCAPSULATED" minOccurs="0"/>
			<xs:element name="originating_system_audit" type="FEEDER_AUDIT_DETAILS"/>
			<xs:element name="feeder_system_audit" type="FEEDER_AUDIT_DETAILS" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FEEDER_AUDIT_DETAILS">
		<xs:sequence>
			<xs:element name="system_id" type="xs:string"/>
			<xs:element name="location" type="PARTY_IDENTIFIED" minOccurs="0"/>
			<xs:element name="provider" type="PARTY_IDENTIFIED" minOccurs="0"/>
			<xs:element name="subject" type="PARTY_PROXY" minOccurs="0"/>
			<xs:element name="time" type="DV_DATE_TIME" minOccurs="0"/>
			<xs:element name="version_id" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="Interval" abstract="true">
		<xs:sequence>
			<xs:element name="lower_included" type="xs:boolean" minOccurs="0"/>
			<xs:element name="upper_included" type="xs:boolean" minOccurs="0"/>
			<xs:element name="lower_unbounded" type="xs:boolean"/>
			<xs:element name="upper_unbounded" type="xs:boolean"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="IntervalOfInteger">
		<xs:complexContent>
			<xs:extension base="Interval">
				<xs:sequence>
					<xs:element name="lower" type="xs:int" minOccurs="0"/>
					<xs:element name="upper" type="xs:int" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="IntervalOfReal">
		<xs:complexContent>
			<xs:extension base="Interval">
				<xs:sequence>
					<xs:element name="lower" type="xs:float" minOccurs="0"/>
					<xs:element name="upper" type="xs:float" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IntervalOfDate">
		<xs:complexContent>
			<xs:extension base="Interval">
				<xs:sequence>
					<xs:element name="lower" type="Iso8601Date" minOccurs="0"/>
					<xs:element name="upper" type="Iso8601Date" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IntervalOfDateTime">
		<xs:complexContent>
			<xs:extension base="Interval">
				<xs:sequence>
					<xs:element name="lower" type="Iso8601DateTime" minOccurs="0"/>
					<xs:element name="upper" type="Iso8601DateTime" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IntervalOfTime">
		<xs:complexContent>
			<xs:extension base="Interval">
				<xs:sequence>
					<xs:element name="lower" type="Iso8601Time" minOccurs="0"/>
					<xs:element name="upper" type="Iso8601Time" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IntervalOfDuration">
		<xs:complexContent>
			<xs:extension base="Interval">
				<xs:sequence>
					<xs:element name="lower" type="Iso8601Duration" minOccurs="0"/>
					<xs:element name="upper" type="Iso8601Duration" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:schema>
